package test07;

import java.util.Arrays;
import java.util.List;

/**
 * 客户端演示代码
 */
public class AIGCAuditClient {
    public static void main(String[] args) {
        System.out.println("🛡️ AIGC内容安全审核平台 - 职责链模式演示\n");

        // 创建审核监控器
        AuditMonitor monitor = new AuditMonitor();

        // 创建处理器链管理器
        HandlerChain handlerChain = new HandlerChain();

        // 注册各种处理器
        handlerChain.addHandler(new SensitiveWordHandler());
        handlerChain.addHandler(new DeepfakeHandler());
        handlerChain.addHandler(new CopyrightHandler());
        handlerChain.addHandler(new QualityHandler());
        handlerChain.addHandler(new HallucinationHandler()); // 新增处理器

        // 场景1: 文本内容审核（AI写作）
        System.out.println("=== 场景1: AI写作内容审核 ===");
        ContentCheckRequest textRequest = new ContentCheckRequest(
                "TEXT_001", ContentType.TEXT,
                "这是一段正常的AI生成文本，包含一些创意内容。"
        );
        handlerChain.processRequest(textRequest);
        monitor.recordAudit(textRequest, new CheckResult(true, textRequest.getRiskLevel(), "审核完成", 0.9, "PASS"));

        // 场景2: 图像内容审核（AI绘画）
        System.out.println("\n=== 场景2: AI绘画内容审核 ===");
        ContentCheckRequest imageRequest = new ContentCheckRequest(
                "IMAGE_001", ContentType.IMAGE,
                "AI生成的风景图像数据"
        );
        handlerChain.processRequest(imageRequest);
        monitor.recordAudit(imageRequest, new CheckResult(true, imageRequest.getRiskLevel(), "审核完成", 0.85, "PASS"));

        // 场景3: 高风险内容审核
        System.out.println("\n=== 场景3: 高风险内容审核 ===");
        ContentCheckRequest highRiskRequest = new ContentCheckRequest(
                "TEXT_002", ContentType.TEXT,
                "这段文本包含违禁词1和政治敏感内容，应该被拦截。"
        );
        handlerChain.processRequest(highRiskRequest);
        monitor.recordAudit(highRiskRequest, new CheckResult(false, highRiskRequest.getRiskLevel(), "审核完成", 0.95, "BLOCK"));

        // 场景4: 版权内容审核
        System.out.println("\n=== 场景4: 版权内容审核 ===");
        ContentCheckRequest copyrightRequest = new ContentCheckRequest(
                "IMAGE_002", ContentType.IMAGE,
                "生成包含米老鼠角色的图像"
        );
        handlerChain.processRequest(copyrightRequest);
        monitor.recordAudit(copyrightRequest, new CheckResult(true, copyrightRequest.getRiskLevel(), "审核完成", 0.88, "WATERMARK"));

        // 场景5: 动态配置审核链（教育类简化流程）
        System.out.println("\n=== 场景5: 教育类内容简化审核 ===");
        handlerChain.setChainConfig(ContentType.TEXT, Arrays.asList(
                "敏感词检测器", "版权检测器"  // 简化流程，跳过质量评估和幻觉检测
        ));

        ContentCheckRequest eduRequest = new ContentCheckRequest(
                "TEXT_003", ContentType.TEXT,
                "教育类AI生成内容，讲解科学知识"
        );
        handlerChain.processRequest(eduRequest);
        monitor.recordAudit(eduRequest, new CheckResult(true, eduRequest.getRiskLevel(), "审核完成", 0.92, "PASS"));

        // 生成统计报告
        monitor.generateReport();

        // 演示动态添加新处理器
        System.out.println("\n=== 动态扩展演示 ===");
        System.out.println("添加新的内容安全处理器...");
        // 可以轻松添加新的处理器而不影响现有逻辑

        // 演示不同内容类型的链配置
        System.out.println("\n=== 各内容类型审核链配置 ===");
        for (ContentType type : ContentType.values()) {
            List<String> config = handlerChain.getChainConfig(type);
            if (config != null) {
                System.out.println(type + ": " + config);
            }
        }
    }
}
